using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 玩家控制器，处理移动和鸟群跟随
/// </summary>
public class PlayerController : MonoBehaviour
{
    // ========== 公开变量 ==========
    [Header("移动参数")]
    [Tooltip("移动速度")]
    public float moveSpeed = 10f;
    [Tooltip("旋转速度")]
    public float rotationSpeed = 100f;

    // ========== 私有变量 ==========
    private List<Boid> followers = new List<Boid>(); // 跟随玩家的鸟列表

    /// <summary>
    /// 每帧更新函数
    /// </summary>
    void Update()
    {
        HandleMovement(); // 处理玩家移动
    }

    /// <summary>
    /// 处理玩家移动输入
    /// </summary>
    private void HandleMovement()
    {
        // 获取输入轴
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");

        // 前后移动（局部坐标系Z轴方向）
        transform.Translate(Vector3.forward * vertical * moveSpeed * Time.deltaTime);

        // 左右旋转（绕Y轴）
        transform.Rotate(Vector3.up * horizontal * rotationSpeed * Time.deltaTime);
    }

    /// <summary>
    /// 添加跟随的鸟
    /// </summary>
    /// <param name="boid">要跟随的鸟</param>
    public void AddFollower(Boid boid)
    {
        // 确保不重复添加
        if (!followers.Contains(boid))
        {
            followers.Add(boid);
        }
    }

    /// <summary>
    /// 当玩家获得整个鸟群时调用
    /// </summary>
    /// <param name="flock">鸟群列表</param>
    public void AcquireFlock(List<Boid> flock)
    {
        foreach (Boid boid in flock)
        {
            AddFollower(boid);
        }
    }

    /// <summary>
    /// 当玩家对象被销毁时调用
    /// </summary>
    void OnDestroy()
    {
        // 销毁所有跟随的鸟
        foreach (Boid boid in followers)
        {
            if (boid != null)
            {
                Destroy(boid.gameObject);
            }
        }
    }
}